/** axios封装
 *  请求拦截、响应拦截、错误统一处理
 */
import axios from 'axios'
import baseURL from './baseURL.js'
import { Notify } from 'vant'

Notify.setDefaultOptions({ duration: 3500 }) // Notify显示3.5s

// 环境的切换
axios.defaults.baseURL = baseURL

// 请求超时时间
axios.defaults.timeout = 5000

// 请求拦截器
axios.interceptors.request.use(
  config => {
    // 加入请求头
    config.headers.mec_token = ''
    return config
  },
  error => {
    return Promise.reject(error)
  }
)

// 响应拦截器
axios.interceptors.response.use(
  response => {
    if (response.status === 200) {
      if (response.data.resp_code === 0) {
        return Promise.resolve(response)
      } else {
        Notify(response.data.resp_msg) // 程序异常信息提示
        return Promise.reject(response)
      }
    } else {
      return Promise.reject(response)
    }
  },
  error => {
    console.log('aa')
    if (error.response && error.response.status) {
      // 服务器状态码不是200的情况
      switch (error.response.status) {
        case 404:
          Notify('网络请求不存在') // 404请求不存在
          break
        default:
          Notify('请求失败') // 其他错误，直接抛出错误提示
          break
      }
      return Promise.reject(error.response)
    }

    Notify('请求超时')
    return Promise.reject(error)
  }
)

export function request(url, params, method) {
  let config = {
    url: url,
    method: method
  }
  if (method === 'get' || method === 'delete') {
    config.params = params
  }
  if (method === 'post' || method === 'put') {
    config.data = params
  }

  return new Promise((resolve, reject) => {
    axios.request(config).then(res => {
        resolve(res.data)
      }).catch(err => {
        reject(err.data)
      })
  })
}
